package cn.jtfadmin.core.modules.quartz.controller;

import cn.jtfadmin.base.lang.common.domain.dto.ResultDTO;
import cn.jtfadmin.core.modules.quartz.domain.dto.JobAddPDTO;
import cn.jtfadmin.core.modules.quartz.domain.dto.JobModelRDTO;
import cn.jtfadmin.core.modules.quartz.service.QuartzService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 系统定时任务controller
 *
 * @author akfh
 * @since 1.0
 */
@RestController
public class QuartzController {

    @Autowired
    public QuartzService quartzService;

    /**
     * 获取当前的定时任务
     *
     * @return d
     */
    @GetMapping(value = "/sys/quartzJob/list")
    public ResultDTO<List<JobModelRDTO>> list() {
        return ResultDTO.successData(quartzService.list());
    }

    /**
     * 增加一个新的定时任务
     *
     * @param jobAddPDTO
     */

    @PostMapping(value = "/sys/quartzJob/add")
    public ResultDTO<String> addJob(@RequestBody JobAddPDTO jobAddPDTO) {
        quartzService.addJob(jobAddPDTO);
        return ResultDTO.success();
    }

    /**
     * 编辑一个定时任务
     *
     * @param jobEditPDTO
     */
    @PutMapping(value = "/sys/quartzJob/edit")
    public ResultDTO<String> editJob(@RequestBody JobAddPDTO jobEditPDTO) {
        quartzService.editJob(jobEditPDTO);
        return ResultDTO.success();
    }

    /**
     * 删除一个定时任务
     *
     * @param id
     */
    @DeleteMapping(value = "/sys/quartzJob/delete")
    public ResultDTO<String> deleteJob(String id) {
        quartzService.deleteJob(id);
        return ResultDTO.success();
    }

    /**
     * 中断定时任务
     *
     * @param id
     */
    @GetMapping(value = "/sys/quartzJob/pause")
    public ResultDTO<String> pauseJob(String id) {
        quartzService.pauseJob(id);
        return ResultDTO.success();
    }

    /**
     * 中断恢复
     *
     * @param id
     */
    @GetMapping(value = "/sys/quartzJob/resume")
    public ResultDTO<String> resumeJob(String id) {
        quartzService.resumeJob(id);
        return ResultDTO.success();
    }

    /**
     * 中断恢复
     *
     * @param id
     */
    @GetMapping(value = "/sys/quartzJob/execute")
    public ResultDTO<String> executeJob(String id) {
        quartzService.execute(id);
        return ResultDTO.success();
    }
}
